package processif.eliminateif;

import org.testng.annotations.Test;

import java.util.Arrays;
import java.util.stream.Collectors;

/**
 * 一月30天，根据是星期几、上午还是下午、天气状况，做不同的事情，后面可能会增加条件
 *
 * 最坏实践，层层嵌套的if
 *
 */
public class WeekToDo {
    // 如果层次比较少，但是有相同判断，就接口分层，把通用判断逻辑封在外层，

    private int[] t3(int[] nums, int target) {
        int l = 0, r = nums.length - 1;
        while (l < r) {
            int sum = nums[l] + nums[r];
            if (sum < target) {
                l++;
            } else if (sum > target) {
                r--;
            } else {
                return new int[]{l+1, r + 1};
            }

        }

        return new int[]{-1, -1};
    }


    @Test
    private void t1() {
        int[] param = new int[8];
        int[] ans = new int[9];

        for (int i = 5; i >= 0;) {
            i--;
        }

//        for (int l = 0, r = 8, pos = 8; pos >= 0;) {
//
//            if (param[l] * param[l] <= param[r] * param[r]) {
//                ans[pos] = param[r] * param[r];
//                r--;
//            } else {
//                ans[pos] = param[l] * param[l];
//                l++;
//            }
//            --pos;
//        }
    }


    public int search(int[] nums, int target) {
        if (nums.length == 0 || nums[nums.length - 1] < target) {
            return -1;
        }

        int l = 0;
        int r = nums.length - 1;


        while (l <= r) {
            // 无符号右移，对于负数，不能得到期望的结果，但是mid不可能为负数
            int mid = (l + r) >>> 1;
            int midVal = nums[mid];

            if (midVal > target) {
                r = mid - 1;
            } else if(midVal < target) {
                l = mid + 1;
            } else {
                return mid;
            }
        }

        return -1;
    }


}
